home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ICE95.ZIP / README.CHI < prev    next >
Text File  |  1995-10-10  |  8KB  |  234 lines

  1. ----------------------------------------------------------------------------
  2.         TABLE OF CONTENTS FOR CHICAGO SPECIFIC CHANGES
  3.  
  4.                  Soft-ICE/W Ver 1.32c
  5. ----------------------------------------------------------------------------
  6.  
  7.      1.  32 bit .SYM file support    
  8.      2.  32 bit exports
  9.      3.  THREAD command
  10.      4.  ADDR command
  11.      5.  32 bit heap support
  12.      6.  Int 41h DOT commands
  13.      7.  VERBOSE keyword
  14.      8.  Listing Dynamic VxDs
  15.      9.  VxD Exports
  16.     10.  32 bit task names
  17.     11.  WLDR and 32 bit applications
  18.  
  19.  
  20. 32 bit .SYM file support
  21. ------------------------
  22.     Support has been added to load 32 bit .SYM files.  This feature should
  23.     work for both MAPSYM files and MSYM files.
  24.  
  25.  
  26. 32 bit exports
  27. --------------
  28.     Support has been added for 32 bit exported symbols.  Use the EXP directive
  29.     in WINICE.DAT to load 32 bit export symbols for any 32 bit DLL.  The EXP
  30.     command lists all exported symbols that WINICE knows about.    These 
  31.     symbols can be used in any WINICE expression and are automatically
  32.     displayed when disassembling code.
  33.  
  34.  
  35. THREAD command
  36. --------------
  37.     The THREAD command has been added to display all threads currently
  38.     running.  The top line of the display is the current thread.  The syntax
  39.     is as follows:
  40.  
  41.     THREAD [task-name | TCB]
  42.    
  43.     If the optional task-name is specified, only threads belonging to the 
  44.     task will be displayed.  If the TCB is specified only information about
  45.     the one specific thread will be displayed.  For each thread the following
  46.     information is dislayed:    
  47.  
  48.     RING0TCB - This is the address of the ring 0 thread control block.
  49.             This is the address that is passed to VxDs for thread
  50.            creation and thread termination.
  51.  
  52.     ID     - This is the word ID number of the thread.
  53.  
  54.     CONTEXT  - This is the context handle for the thread that determines
  55.            what address space is used for the thread.
  56.  
  57.     RING3TCB - This is the address of the ring 3 thread control block.
  58.            This is the one that would be used by applications.
  59.  
  60.     PROCESS  - This is the address of the process block that owns the
  61.            thread.    
  62.  
  63.     TASKDB   - This is the selector of the task database that owns the
  64.            thread.
  65.  
  66.     PDB      - This the selector of the program database (protected mode
  67.            PSP).
  68.  
  69.     SZ     - This is the size of the thread either 16 or 32 bit.
  70.  
  71.     OWNER     - This is the task name of the owner.  For 32 bit tasks,
  72.            the module name with the extension stripped off is
  73.            displayed.
  74.  
  75.    An asterisk '*' displayed in front of the owner name indicates that the
  76.    thread is the current thread for the task.
  77.  
  78.  
  79. ADDR command
  80. ------------
  81.     The ADDR command has been added to both display and switch to specific
  82.     address contexts.  Each 32 bit task is currently given the address space
  83.     from 400000h to 3fffffffh.  This is called an address context.  The
  84.     syntax of the ADDR command is as follows:
  85.  
  86.     ADDR [context-handle | task-name]
  87.  
  88.     If no parameters are specified information will be displayed for each
  89.     address context.  The top line of the display is the current context.
  90.     For each address context, the following information is displayed.
  91.  
  92.     HANDLE     - This is the address of the context control block.  This
  93.            is the handle that would be passed in VxD calls that
  94.            require a context handle.
  95.  
  96.     PGTPTR     - This is the address of an array of page table addresses. 
  97.            Each entry in the array represents a 4 meg page table.
  98.            When address contexts are switched this array is copied
  99.            to the appropriate spot in the page directory. 
  100.  
  101.     TABLES   - This is the number of entries in the PGTPTR array.  Not all
  102.            entries contain valid page directory entries.  This is 
  103.               only the number of entries reserved.
  104.  
  105.     MINADDR     - This is the minimum virtual address of the address context.
  106.  
  107.     MAXADDR  - This is the maximum virtual address of the address context.
  108.  
  109.     OWNER    - This is the task name of the first 32 bit task that uses
  110.            this address context.  All the 16 bit tasks share a
  111.            common address context which show up as being owned by
  112.            KERNEL.
  113.  
  114.     If a context-handle or task-name are entered, WINICE will switch to that
  115.     address context.  The proper address context will be restored before
  116.     WINICE continues.
  117.  
  118.  
  119. 32 bit heap support
  120. -------------------
  121.     Support has been added in the HEAP command for 32 bit heaps.  This
  122.     includes both ring3 heaps and ring0 heaps.  The syntax for 32 bit heaps
  123.     is as follows:
  124.  
  125.     HEAP 32 [task-name | heap-base]
  126.  
  127.     If no parameters are specified, all 32 bit heaps that can be found will
  128.     be displayed.  The following heaps will be displayed:
  129.  
  130.     Each process's system heap.  This is the heap created for each process
  131.     by Kernel32 when the process is first created.  
  132.  
  133.     Each process's private heap if one exists.  This is the heap that
  134.     would be returned in the GetProcessHeap command.  Nothing will be
  135.     shown for 16 bit processes since they use KERNEL32's heap.
  136.  
  137.     The two ring 0 heaps created by VMM.
  138.  
  139.     One ring0 heap for every existing virtual machine.
  140.  
  141.  
  142.     For each 32 bit heap the following information will be displayed:
  143.  
  144.     The heap base address.
  145.  
  146.     The maximum size that the heap can grow too.
  147.  
  148.     The current committed memory in the heap.
  149.  
  150.     The owner of the heap.
  151.  
  152.  
  153.     If a task-name is provided, WINICE will display the entire process heap
  154.     for that task.  The address context will automatically be changed to the
  155.     correct one.  If a 16 bit task name is given, KERNEL32's heap will be
  156.     displayed.        
  157.  
  158.     If an actual heap base address is given that entire heap will be
  159.     displayed.  If the heap is in private address space, you must make sure
  160.     you are in the right address context for that heap.
  161.  
  162.     When displaying an individual 32 bit heap the following information is
  163.     displayed:
  164.  
  165.         The address of each heap element.
  166.  
  167.     The size in bytes of each element.
  168.  
  169.     The EIP address of the code that allocated the element.
  170.  
  171.     The nearest symbol to the EIP address.
  172.  
  173.     The last two pieces of information are only available in the debug
  174.     versions of CHICAGO.  For ring3 heaps this means the SDK debug versions,
  175.     for ring0 heaps this means the DDK debug version of DOS386.
  176.  
  177.  
  178. INT 41h DOT Commands
  179. --------------------
  180.     Support has been added for the following int 41h dot commands.
  181.  
  182.     function 70h    register 32 bit dot command
  183.          72h    deregister dot command
  184.          73h    printf32
  185.          75h    get registers
  186.              76h    set registers
  187.          77h     get character from command line
  188.          78h    evaluate expression
  189.          79h    verify memory address
  190.          7ah    display registers
  191.          7bh    stack dump
  192.  
  193.  
  194. VERBOSE keyword
  195. ---------------
  196.     When the VERBOSE keyword is placed on a line in the WINICE.DAT file
  197.     WINICE will display debugging messages when the following events occur.
  198.  
  199.     16 bit segment loads and segment frees
  200.     32 bit segment loads and segment frees
  201.     Module deleted
  202.     DLL starting
  203.     ALL VxD messages
  204.  
  205.  
  206. Dynamic VxDs
  207. ------------
  208.     The VXD command now displays a list of dynamically loaded VxDs. 
  209.     Everything displayed after the dashed lines is a dynamic VxD.
  210.  
  211.  
  212. VxD Exports
  213. -----------
  214.     Changed the VCALL and VXD commands to include VXD services for every
  215.     CHICAGO VxD contained in the DDK include files.
  216.  
  217.  
  218. 32 bit task names
  219. -----------------
  220.     In the current release of CHICAGO all 32 bit tasks have the same task
  221.     name which is 'THREAD32'.  Rather than display this, WINICE will use
  222.     the name found in the 16 bit module data base for the task.  This name
  223.     is the FILE.EXT of the module.  WINICE strips off the extension before
  224.     displaying this.  On commands that accept a task name, enter only the
  225.     file portion of the name.
  226.  
  227.  
  228. WLDR and 32 bit applications
  229. ----------------------------
  230.     Currently WLDR will not load symbols for a 32 bit application.  It can be
  231.     used to load them but when it pops up the screen will be filled with
  232.     invalid instructions.  This is because the code has not actually been 
  233.     loaded.  Single stepping once (F8) will force the code to load.
  234.